package com.sky.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.*;

/**
 * 新增管理员DTO
 * 用于接收创建新管理员账户的请求参数
 * 包含：
 * 1. 基本信息：用户名、邮箱
 * 2. 安全信息：密码
 * 3. 权限信息：角色ID
 * 4. 状态信息：启用/禁用状态
 */
@Data
@ApiModel(description = "新增管理员DTO")
public class AdminUserCreateDTO {

    /**
     * 管理员用户名
     * 必填，长度限制3-20个字符
     * 用于管理员登录和身份标识
     */
    @NotBlank(message = "用户名不能为空")
    @Size(min = 3, max = 20, message = "用户名长度必须在3-20个字符之间")
    @ApiModelProperty(value = "管理员用户名", required = true)
    private String username;

    /**
     * 管理员邮箱
     * 必填，必须符合邮箱格式
     * 用于接收系统通知和重要操作验证
     */
    @NotBlank(message = "邮箱不能为空")
    @Email(message = "邮箱格式不正确")
    @ApiModelProperty(value = "邮箱地址", required = true)
    private String email;

    /**
     * 管理员密码
     * 必填，长度限制6-20个字符
     * 用于账户安全认证
     */
    @NotBlank(message = "密码不能为空")
    @Size(min = 6, max = 20, message = "密码长度必须在6-20个字符之间")
    @ApiModelProperty(value = "密码", required = true)
    private String password;

    /**
     * 角色ID
     * 必填，关联管理员角色表
     * 用于确定管理员的权限范围
     */
    @NotNull(message = "角色ID不能为空")
    @ApiModelProperty(value = "角色ID", required = true)
    private Integer role;

    /**
     * 账户状态
     * 可选，默认值为0（启用）
     * 0: 启用 - 允许登录和操作
     * 1: 禁用 - 禁止登录和操作
     */
    @ApiModelProperty(value = "状态：0-启用(默认)，1-禁用", required = false)
    private Integer status = 0;
} 